package pms.controller;

import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;


/**
 * Controller, der die geaenderten Daten oder ein neu angelegtes Objekt
 * von Mitarbeiter speichert   
 * Falls Fehler auftreten, wird die view 'Fehler.jsp' angezeigt.
 */

public class SaveMitarbeiter extends AlleMitarbeiter {
	protected ModelAndView handleRequestInternal(
			HttpServletRequest httpServletRequest,
			HttpServletResponse httpServletResponse) throws Exception {
		httpServletRequest.setCharacterEncoding("UTF-8");
		
		SimpleDateFormat df = new SimpleDateFormat("dd.MM.yyyy"); 
		Date geburt;
		Date eintritt;
		Date austritt;
		boolean ok = false;
		
		try {
			int id = Integer.parseInt(httpServletRequest.getParameter("id"));
			String personalnummer = httpServletRequest.getParameter("personalnummer");
			String anrede = httpServletRequest.getParameter("anrede");
			String vorname = httpServletRequest.getParameter("vorname");
			String nachname = httpServletRequest.getParameter("nachname");
			String aufgabe_position = httpServletRequest.getParameter("aufgabe_position");
			String geburtsdatum = httpServletRequest.getParameter("geburtsdatum");
			String eintrittsdatum = httpServletRequest.getParameter("eintrittsdatum");
			String austrittsdatum = httpServletRequest.getParameter("austrittsdatum");
			String e_mail_adresse = httpServletRequest.getParameter("e_mail_adresse");
			String telefon = httpServletRequest.getParameter("telefon");
			String faxnummer = httpServletRequest.getParameter("faxnummer");
			String passwort = httpServletRequest.getParameter("passwort");
			ok = getMitarbeiterDao().pruefeDatum(geburtsdatum, eintrittsdatum, austrittsdatum);
			if (ok) {
				if (id == 0) {
					geburt = df.parse(geburtsdatum);
					eintritt = df.parse(eintrittsdatum);
					if (austrittsdatum == "") {
						austritt = null;
					} else {
						austritt = df.parse(austrittsdatum);						
					}
					getMitarbeiterDao().create(personalnummer, anrede, vorname, nachname, aufgabe_position,
							geburt, eintritt, austritt, e_mail_adresse,
							telefon, faxnummer, passwort);
				} else {
					geburt = df.parse(geburtsdatum);
					eintritt = df.parse(eintrittsdatum);
					if (austrittsdatum == "") {
						austritt = null;
					} else {
						austritt = df.parse(austrittsdatum);						
					}
					getMitarbeiterDao().modify(id, personalnummer, anrede, vorname, nachname, aufgabe_position,
							geburt, eintritt, austritt, e_mail_adresse,
							telefon, faxnummer, passwort);
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
			ModelAndView mv = new ModelAndView();
			mv.addObject("title", "Speichere Mitarbeiter");
			mv.addObject("message", "Der Mitarbeiter konnte nicht angelegt bzw. geändert werden." +
					" Bitte Eingaben neu...");
			mv.setViewName("Fehler"); 
			return mv;
		}

		return super.handleRequestInternal(httpServletRequest, httpServletResponse);
	}
}